/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ProjetoCompreJa.DAO;

import br.com.classesbasicas.Pedido;
import ProjetoCompreJa.Connect_BD;
import br.com.classesbasicas.Cliente;
import ProjetoCompreJa.Itens.Itens;
import ProjetoCompreJa.Itens.Itens;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

/**
 *
 * @author DANIEL
 */
public class PedidoDAO extends Connect_BD {

    private static PedidoDAO memoria;
    java.sql.Statement stmt;

    public static PedidoDAO obterMemoria() {
        if (memoria == null) {
            memoria = new PedidoDAO();
        }
        return memoria;
    }

    public void cadastrar(Pedido p) throws Exception {
        //try {

//            stmt = conectar();
        //          String sql = "INSERT INTO Pedido(cod_ped,cod_cliente,data_ped) VALUES (" + p.getCod_Pedido()
        //                + "," + p.getCliente().getCod_Cliente() + ");";
        //      stmt.execute(sql);
            /*for (Itens pp : p.getItens_Pedido()) {
         String sqlItens = "INSERT INTO PedidoProduto(cod_ped,cod_produto,qtd_itens,preco_itens) VALUES (" + p.getCod_Pedido() + ", "
         + pp.getProduto().getCod_produto()
         + ", '" + pp.getQtd()
         + "', '" + pp.getValortotal() + "');";
         stmt.execute(sqlItens);
         }*/
        desconectar();
        // } catch (ClassNotFoundException | SQLException ex) {
        //   throw new Exception(ex.getMessage());
        //}
    }

    public ArrayList<Pedido> listarTodosPedido() throws Exception {
        ArrayList<Pedido> retorno = new ArrayList<Pedido>();
        try {
            stmt = conectar();
            String sql = " select * from pedido;";
            ResultSet rs = stmt.executeQuery(sql);
            while (rs.next()) {
                Pedido pedido = new Pedido();
                pedido.setCod_Pedido(rs.getInt("cod_ped"));
                /*pedido.setData(rs.getDate("data_ped"));*/
                // pedido.getCliente().setCod_Cliente(rs.getInt("cod_cliente"));
                retorno.add(pedido);
            }
            desconectar();
        } catch (ClassNotFoundException | SQLException ex) {
            throw new Exception(ex.getMessage());
        }

        return retorno;
    }

    public ArrayList<Itens> listarItens(Pedido p) throws Exception {
        ArrayList<Itens> retorno = new ArrayList<Itens>();
        try {
            stmt = conectar();

            String sql = " ";
            sql += "SELECT ";
            sql += "cliente.nome_cliente as Cliente,";
            sql += "produto.nome_produto as Nome_Produto,";
            sql += " pedidoproduto.qtd_itens as Quantidade,";
            sql += " pedidoproduto.valor as Preco_Pedido,";
            sql += "pedido.valor_ped as Valor_Pedido,";
            sql += "pedido.data_ped as Data_Pedido";
            sql += " FROM ";
            sql += " pedido,";
            sql += " pedidoproduto,";
            sql += " produto,";
            sql += "cliente";
            sql += " WHERE  ";
            sql += " pedido.cod_ped = pedidoproduto.cod_ped AND ";
            sql += "cliente.cod_cliente = pedido.cod_cliente AND";
            sql += " produto.cod_produto = pedidoproduto.cod_produto";

            ResultSet rs = stmt.executeQuery(sql);
            while (rs.next()) {
                Cliente cli = new Cliente();
                Itens pp = new Itens();
                pp.getProduto().setNome(rs.getString("nome_produto"));

                retorno.add(pp);
            }

            desconectar();
        } catch (ClassNotFoundException | SQLException ex) {
            throw new Exception(ex.getMessage());
        }

        return retorno;
    }

    public ArrayList<Pedido> listarPedidoporCliente(Cliente cli) throws Exception {
        ArrayList<Pedido> retorno = new ArrayList<Pedido>();
        try {
            stmt = conectar();
            String sql = " select cod_ped,data_ped from pedido where cod_cliente = "; /*cli.getCod_Cliente();*/

            ResultSet rs = stmt.executeQuery(sql);
            while (rs.next()) {
                Pedido pedido = new Pedido();
                pedido.setCod_Pedido(rs.getInt("cod_ped"));
                /*pedido.setData(rs.getDate("data_ped"));*/
                retorno.add(pedido);
            }
            desconectar();
        } catch (ClassNotFoundException | SQLException ex) {
            throw new Exception(ex.getMessage());
        }

        return retorno;
    }

    public ArrayList<Itens> listarPedidoProduto(Pedido p) throws Exception {
        ArrayList<Itens> retorno = new ArrayList<Itens>();
        try {
            stmt = conectar();

            String sql = " ";
            sql += "SELECT ";
            sql += " produto.nome_produto as nome_produto,  ";
            sql += " pedidoproduto.qtd_itens as qtd_itens,  ";
            sql += " pedidoproduto.preco_itens as preco_itens  ";
            sql += " FROM ";
            sql += " pedido,  ";
            sql += " pedidoproduto,  ";
            sql += " produto ";
            sql += " WHERE ";
            sql += " pedido.cod_ped = pedidoproduto.cod_ped AND ";
            sql += " Pedidoproduto.cod_produto = produto.cod_produto AND pedido.cod_ped = " + p.getCod_Pedido();
            ResultSet rs = stmt.executeQuery(sql);
            while (rs.next()) {
                Itens pp = new Itens();
                pp.getProduto().setNome(rs.getString("nome_produto"));
                /*pp.setQtd(rs.getFloat("qtd_itens"));
                 pp.setValortotal(rs.getFloat("preco_itens"));*/

                retorno.add(pp);
            }
            desconectar();
        } catch (ClassNotFoundException | SQLException ex) {
            throw new Exception(ex.getMessage());
        }

        return retorno;
    }
}
